package model;

import java.io.Serializable;

import javax.jdo.PersistenceManager;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import app.PMF;
import beans.BenCatBean;
import beans.BeneffitBean;
import beans.CarrierBean;

import com.google.appengine.api.datastore.Key;

@PersistenceCapable
public class Povlastica implements Serializable{
	
	private static final long serialVersionUID = 2932243641538371850L;
	
	public static final int PROCENAT = 1;
	public static final int IZNOS = 2;
	
	@PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Key sifra;
	private String naziv;
	private int op;
	private double vrednost;	

    @Persistent
	public Key katPovlastice;

    @Persistent
	public Key prevoznik;

	public Povlastica() {
		super();
	}

	public Povlastica(String naziv, int op, double vrednost,
			Key kategorijaPovlastice, Key prevoznik) {
		super();
		this.naziv = naziv;
		this.op = op;
		this.vrednost = vrednost;
		this.katPovlastice = kategorijaPovlastice;
		this.prevoznik = prevoznik;
	}

	public Povlastica(Key sifra, String naziv, int op, double vrednost,
			Key kategorijaPovlastice, Key prevoznik) {
		super();
		this.sifra = sifra;
		this.naziv = naziv;
		this.op = op;
		this.vrednost = vrednost;
		this.katPovlastice = kategorijaPovlastice;
		this.prevoznik = prevoznik;
	}

	public Key getSifra() {
		return sifra;
	}

	public void setSifra(Key sifra) {
		this.sifra = sifra;
	}

	public String getNaziv() {
		return naziv;
	}

	public void setNaziv(String naziv) {
		this.naziv = naziv;
	}	

	public int getOp() {
		return op;
	}

	public void setOp(int op) {
		this.op = op;
	}

	public double getVrednost() {
		return vrednost;
	}

	public void setVrednost(double vrednost) {
		this.vrednost = vrednost;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public KategorijaPovlastice getKatPovlastice() {
		PersistenceManager pm = PMF.get().getPersistenceManager();

		KategorijaPovlastice kat = (KategorijaPovlastice) pm.getObjectById(KategorijaPovlastice.class , katPovlastice);
		pm.close();

		return kat;
	}

	public void setKatPovlastice(Key kategorijaPovlastice) {
		this.katPovlastice = kategorijaPovlastice;
	}	
	
	public Prevoznik getPrevoznik() {
		PersistenceManager pm = PMF.get().getPersistenceManager();

		Prevoznik prevoznik = (Prevoznik) pm.getObjectById(Prevoznik.class , katPovlastice);
		pm.close();

		return prevoznik;
	}

	public void setPrevoznik(Key prevoznik) {
		this.prevoznik = prevoznik;
	}
	
	public BeneffitBean toBeneffitBean(){
		BenCatBean benCat = Util.getEntityFromTableByID(KategorijaPovlastice.class, 
							katPovlastice.getId()+"").toBenCatBean();
		CarrierBean car = Util.getEntityFromTableByID(Prevoznik.class, 
				prevoznik.getId()+"").toCarrierBean();
		
		return new BeneffitBean(Integer.valueOf((int)sifra.getId()), naziv, Integer.valueOf(op),
				Double.valueOf(vrednost), benCat,car);
	}

	@Override
	public String toString() {
		return "Sifra: " + sifra + ", naziv: " + naziv + ", Tip: " + op + ", Vrednost: " + vrednost
			+ getKatPovlastice();
	}

}